This invention generally relates to network computing, and more specifically to allocating resources in a network computing environment such as a cloud computing environment.
Cloud computing, which is one type of network computing, refers to a set of hosted resources such as processors, operating systems, software, memory and other components that are made available to users over the Internet or some other network. Using cloud computing, a user or customer can request the instantiation of a virtual machine or set of machines from those resources from a central server or management system to perform intended tasks or applications. The user can lease or subscribe to the requested set of resources on a comparatively short-term basis, such as hours or days, for their intended application.
The paradigm shift from client-server to cloud computing has occurred in the last decade. But only in the last several years, cloud computing has become pragmatic and more affordable to even low-end customers with a monthly budget of a few hundred dollars. The users are not required to know the complications of managing either the resources or the software aspects while deploying a web or business application.
A number of factors have given rise to the increase in the utilization of cloud computing resources. For example, advances in networking technologies have significantly improved resource connectivity while decreasing connectivity costs. Advances in virtualization technologies have increased the efficiency of computing hardware by improving scalability and making it possible to more closely match computing hardware resources to the requirements of a particular computing task. Additionally, virtualization technologies commonly deployed in cloud computing environments have improved application reliability by enabling failover policies and procedures that reduce disruption due to an application or hardware failure.
A variety of different computing resources may be created on a cloud. For example, a resource may include all the information necessary to run application software, and may include UNIX, Linux, or Windows operating systems and specific application software as desired by a user. The information for configuring the resource to be created is referred to as an image. After an image has been created (instantiated), the resource becomes an instance, such as, for example, a server instance
Payment for use of cloud resources is now similar to payment for wireless cell phone plans. The usage is usually billed by a pay-by-use method (like electricity) or by subscription (time based, like a newspaper) with little or no upfront costs. There are many advantages of moving over to cloud computing from traditional client-server architecture, including shared infrastructure costs, no operations or managements costs, and low or no capital expenditure. When software as a service (SaaS) was becoming popular for Web 2.0, Hardware as a service (Haas) was also growing via cloud computing. Clouds are usually run by large high powered data centers, which are interlinked high end servers with very large network bandwidth.
There are many key players in this space of cloud computing including AMAZON®EC2, the RackSpaceCloud®, SAVVIS®, AT&T® Synaptic Hosting, Verizon® CaaS, and IBM® smart business for cloud.
Today a typical user logs on to the website of a service provider, and asks for a resource and required software image for deploying a standard application on the Cloud infrastructure. The user specifies a number of parameters including, and not limited to, the time line during which resources are required, the computing power, and memory. The user also specifies whether it is an immediate (spot-on) request or a future (reserved) request. The prices are determined based on the inputs and the available capacity and a price quote is shown to the user in real time. The user accepts or reject the quote. If the user accepts the quote, then the user submits the job (or uses the resource) at the specified time.
In this operation, the cloud resource receives requests from the cloud users; and based on existing schedule and forecast, the resource provider allocates the resources based on the delivery and resource constraints of the cloud users. With this current approach, in case it is not feasible to provide a user with the requested resources, the resource provider essentially loses that potential revenue and a customer.